/*
 * BAT2U水质检测模块
 */

#ifndef BAT2U_H_
#define BAT2U_H_

#include <stdio.h>
#include "driverlib\MSP430F5xx_6xx\driverlib.h"

/*
 * 引脚与模块定义
 */
#define BAT2U_USCI_PORT     GPIO_PORT_P3
#define BAT2U_USCI_PIN_TX   GPIO_PIN4//p3.4
#define BAT2U_USCI_PIN_RX   GPIO_PIN5//p3.5
#define BAT2U_USCI_BASE     USCI_A0_BASE //模块基地址，P3.4和.5使用的是USCI_A0
//#define BAT2U_DMA_CHANNEL   DMA_CHANNEL_0

/*
 * 其他参数定义
 */
#define BAT2U_MODULE_INIT_NTC_B             3435    //水质模块的NTC B值
#define BAT2U_MODULE_INIT_NTC_RESISTANCE    8440    //水质模块的NTC电阻值
#define BAT2U_RX_BUFF_LEN                   12      //BAT2U接收数据缓存区的大小

uint8_t BAT2U_ReceiveStatus;
uint8_t BAT2U_ReceivedData[BAT2U_RX_BUFF_LEN];
uint8_t BAT2U_ReceivedDataCount;
uint8_t dataDma;


/*
 * @brief  初始化BAT2U的串口通讯
 * @param  无
 * @retval 无
 */
void BAT2U_Init();

/*
 * @brief  发送指令初始化BAT2U模块
 * @param  无
 * @retval 无
 */
void BAT2U_ConfigModule();

/*
 * @brief  发送检测指令，并取得BAT2U返回的TDS值与温度值
 * @param  TDS：BAT2U返回的TDS值将会存到这里
 *         temperature：BAT2U返回的温度值将会存到这里
 * @retval 返回获取成功与否
 *          00：成功获取温度与水质数据
 *          01：模块返回：命令帧异常
 *          02：模块返回：忙碌中
 *          03：模块返回：校正失败
 *          04：模块返回：检测温度超出范围
 *          05：等待数据超时
 *          06：接收到了数据，但既不是温度与水质的数据，也没有得到异常报错
 */
uint8_t BAT2U_SenseCommand(uint16_t *TDS, uint16_t *temperature);

/*
 * @brief  发送基线校准指令
 * @param  无
 * @retval 返回设置成功与否
 *          00：基线校准成功
 *          01：模块返回：命令帧异常
 *          02：模块返回：忙碌中
 *          03：模块返回：校正失败
 *          04：模块返回：检测温度超出范围
 *          05：等待数据超时
 *          06：接收到了数据，但既不是温度与水质的数据，也没有得到异常报错
 */
int8_t BAT2U_CalibrationBaseline();

/*
 * @brief  发送设置NTC常温电阻值指令
 * @param  NTCresistance:要设置的电阻值
 * @retval 返回设置成功与否
 *          00：设置NTC常温电阻成功
 *          01：模块返回：命令帧异常
 *          02：模块返回：忙碌中
 *          03：模块返回：校正失败
 *          04：模块返回：检测温度超出范围
 *          05：等待数据超时
 *          06：接收到了数据，但既不是温度与水质的数据，也没有得到异常报错
 */
int8_t BAT2U_SetNTCresistance(uint32_t NTCresistance);

/*
 * @brief  发送设置NTC B值指令
 * @param  NTC_B:要设置的NTC B值
 * @retval 返回设置成功与否
 *          00：设置NTC常温电阻成功
 *          01：模块返回：命令帧异常
 *          02：模块返回：忙碌中
 *          03：模块返回：校正失败
 *          04：模块返回：检测温度超出范围
 *          05：等待数据超时
 *          06：接收到了数据，但既不是温度与水质的数据，也没有得到异常报错
 */
int8_t BAT2U_SetNTC_B(uint16_t NTC_B);

/*
 * @brief  清空接收缓存区
 * @param  无
 * @retval 无
 */
void BAT2U_ClearRxBuff();

/*
 * @brief  打开水质检测模块的电源
 * @param  无
 * @retval 无
 */
void BAT2U_powerON();

/*
 * @brief  关闭水质检测模块的电源
 * @param  无
 * @retval 无
 */
void BAT2U_powerOFF();

#endif /* BAT2U_H_ */
